package erfgame.core.world;

import java.awt.Point;


import erfgame.core.Point3D;
import erfgame.core.Point3DAndRotation;
import erfgame.core.dao.ObjectDAO;
import erfgame.core.entity.Entity;
import erfgame.core.memory.Pointer;
import erfgame.core.world.terrain.BlockEntityPositions;
import erfgame.core.world.terrain.BlockGridTiles;
import erfgame.core.world.terrain.BlockSurfaceImages;

public interface WorldDAOManager {
	
	WorldDAO getWorldDAO();
	
	ObjectDAO<Point3D, Pointer<byte[][][]>> getBlockTerrainDAO( World world );
	
	ObjectDAO<Point3DAndRotation, BlockSurfaceImages> getBlockSurfaceImagesDAO( World world );
	
	ObjectDAO<Point3D, BlockEntityPositions> getBlockEntityPositionsDAO( World world );
	
	ObjectDAO<Point, int[][][]> getSurfacesDAO( World world );
	
	ObjectDAO<Point, BlockGridTiles> getGridTilesDAO( World world );
	
	ObjectDAO<Long, Entity> getEntityDAO( World world );
}
